Technote 1180

Sherlock's Find By Content Library



ñ⁄éü

äTóv
ÉRÉìÉeÉìÉcåüçıÇ™égópâ¬î\Ç≈džÇÈǩǫǧǩÇÃîªíf
åüçıÉZÉbÉVÉáÉìÇégÇ¡ÇΩçÏãΔ
åüçıÉZÉbÉVÉáÉìÇÃÉZÉbÉgÉAÉbÉv
åüçıÇÃé¿çs
åüçıÉZÉbÉVÉáÉìÇ©ÇÁÇÃèÓïÒÇÃéÊìæ
ÉRÉìÉeÉìÉcåüçıÉäÉtÉ@ÉåÉìÉX

ÉfÅ[É^å^
åüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔèâä˙âª
åüçıÉZÉbÉVÉáÉìÇÃê›íË
åüçıÇÃé¿çs
ÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ
ÉeÉLÉXÉgÇÃóvñÒ
É{ÉäÉÖÅ[ÉÄÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ
É{ÉäÉÖÅ[ÉÄÅAÉtÉHÉãÉ_ÅAÇ®ÇÊÇ—ÉtÉ@ÉCÉãÇÃçıà¯çÏê¨
ÉqÅ[ÉvÉXÉyÅ[ÉXÇÃó\ñÒ
ÉAÉvÉäÉPÅ[ÉVÉáÉìíËã`ÇÃÉãÅ[É`Éì


ÉRÉìÉeÉìÉcåüçıÇà C åæåÍÉTÉ}Éä

DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈ÇÕÅAÉtÉ@ÉCÉãÇÃì‡óeÇåüçıÇ∑ÇÈÇΩÇflÇ… Sherlock Ç…ÇÊǡǃégópÇ≥ÇÍÇÈÉRÉìÉeÉìÉcåüçıÉâÉCÉuÉâÉäDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB

ÉRÉìÉeÉìÉcåüçıÉâÉCÉuÉâÉäÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÊÇÈì‡óeÇ…äÓÇ√Ç¢ÇΩÉtÉ@ÉCÉãåüçıÇâ¬î\Ç…Ç∑ÇÈÉãÅ[É`ÉìÇΔä÷êîÇÃÉtÉãÉZÉbÉgÇÉGÉNÉXÉ|Å[ÉgǵNjÇ∑ÅB

Mac OS 8.6 Ç©ÇÁÅAText Extractor ÉvÉâÉOÉCÉìÇ™ì±ì¸Ç≥ÇÍNjǵÇΩÅBDZÇÍÇÁÇÃÉvÉâÉOÉCÉìÇégǡǃÅAÉRÉìÉeÉìÉcåüçıÇ≈ÇÕÉoÉCÉiÉäÉtÉ@ÉCÉãÇ©ÇÁÉeÉLÉXÉgèÓïÒÇíäèoǵÅAǪÇÍÇÁÇçıà¯ÉtÉ@ÉCÉãÇ…ëgÇ›çûÇflÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅBText Extractor ÉvÉâÉOÉCÉìÇÃè⁄ç◊DžǬǢǃÇÕÅAÉeÉNÉjÉJÉãÉmÅ[ÉgÅuTN1181 Sherlock ÇÃÉRÉìÉeÉìÉcåüçı Text Extractor ÉvÉâÉOÉCÉìÅvÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB

DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ©ÇÁíºê⁄ìIÇ…ÉRÉìÉeÉìÉcåüçıÉâÉCÉuÉâÉäÇ…ÉAÉNÉZÉXǵÇΩÇ¢ÇΔçlǶǃǢÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÉfÉxÉçÉbÉpÇëŒè€Ç…ǵǃǢNjÇ∑ÅB



äTóv

Mac OS 8.6 Ç≈íÒãüÇ≥ÇÍÇΩÉRÉìÉeÉìÉcåüçı (FBC) ã@î\ÇÕÅAÅuã@î\ägí£ÅvÉtÉHÉãÉ_Ç…èÌíìÇ∑ÇÈ PowerPC Code Fragment Manager ÉâÉCÉuÉâÉäÇΔǵǃÉCÉìÉvÉäÉÅÉìÉgÇ≥ÇÍǃǢNjÇ∑ÅBSherlock ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ FBC ÇÃÉNÉâÉCÉAÉìÉgÇ≈džÇËÅADZÇÃã§óLÉâÉCÉuÉâÉäÇâÓǵǃ FBC ÉTÅ[ÉrÉXÇ…ÉAÉNÉZÉXǵNjÇ∑ÅBÉfÉxÉçÉbÉpÇ™äJî≠Ç∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìLJÅADZÇÃÉâÉCÉuÉâÉäÇ™íÒãüÇ∑ÇÈåüçıã@î\Ç…ÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅADZÇÃã§óLÉâÉCÉuÉâÉäÇâÓǵǃêVǵǢ FBC ã@î\Ç…ÉAÉNÉZÉXÇ≈Ç´ÇÈêªïiÇäJî≠Ç∑ÇÈï˚ñ@DžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB

FBC Ç÷ÇÃÉRÉìÉpÉCÉâÉCÉìÉ^ÉtÉFÅ[ÉXÇÕÅAÅuFindByContent.hÅvÇΔǢǧ C ÇÃÉwÉbÉ_ÉtÉ@ÉCÉãÇ…é˚ÇflÇÁÇÍǃǢNjÇ∑ÅBÇ‹ÇΩÅAÉäÉìÉNÇñ⁄ìIÇΔǵǃÅAFBC ÇÉCÉìÉvÉäÉÅÉìÉgÇ∑ÇÈ Code Fragment Manager ÉâÉCÉuÉâÉäÇÕÅAÅuFind By ContentÅvÇΔǢǧñºëOÇ≈Ç∑ÅBDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ…ãLç⁄Ç≥ÇÍǃǢÇÈ FBC ÉãÅ[É`ÉìÇégópÇ∑ÇÈÉfÉxÉçÉbÉpÇÕÅADZÇÃÉâÉCÉuÉâÉäÇ…ëŒÇµÇƒé„Ç¢ÉäÉìÉN (Weak-link) ÇçsÇ¢ÅADZÇÍÇÁÇÃÉãÅ[É`ÉìÇÃÇ¢Ç∏ÇÍÇ©ÇåƒÇ—èoÇ∑ëOÇ…ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃì‡ïîÇ©ÇÁ Gestalt ÉZÉåÉNÉ^ÇÉ`ÉFÉbÉNǵǃÇ≠ÇæÇ≥Ç¢ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ

ÉRÉìÉeÉìÉcåüçıÇ™égópâ¬î\Ç≈džÇÈǩǫǧǩÇÃîªíf

FBC Ç≈ÇÕ 2 ǬÇà Gestalt ÉZÉåÉNÉ^ÇíËã`ǵǃǢNjÇ∑ÅBFBC ÇÃÉNÉâÉCÉAÉìÉgÇÕÅAåƒÇ—èoǵÇçsǧëOÇ…ìKêÿÇ»ÉoÅ[ÉWÉáÉìÇÃÉCÉìÉvÉäÉÅÉìÉeÅ[ÉVÉáÉìÇ™égópâ¬î\Ç≈džÇÈDZÇΔÇåüèÿÇ∑ÇÈïKóvǙdžÇËÅAé¿ç€ÇÃåüçıÇé¿çsÇ∑ÇÈëOÇ… FBC ÇÃçıà¯çÏê¨ÉXÉeÅ[É^ÉXÇÉ`ÉFÉbÉNÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

enum {
    gestaltFBCVersion            = 'fbcv',
    gestaltFBCCurrentVersion     = 0x0011
};

gestaltFBCVersion ÉZÉåÉNÉ^ÇÕÅAÉRÉìÉsÉÖÅ[É^è„Ç…ÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍǃǢÇÈ FBC ÇÃÉoÅ[ÉWÉáÉìÇï‘ǵNjÇ∑ÅBÉfÉxÉçÉbÉpÇÕÅADZÇÃÉoÅ[ÉWÉáÉìÇΔÅAÉvÉçÉOÉâÉÄÇÃÉRÉìÉpÉCÉãÇ…égópǵÇΩÉCÉìÉ^ÉtÉFÅ[ÉXÇÃÉoÅ[ÉWÉáÉì (gestaltFBCCurrentVersion ÇégǡǃéÊìæÇ≈Ç´ÇÈ) Çî‰ärǵǃÅAFBC Ç÷ÇÃåƒÇ—èoǵÇçsǧDZÇΔÇ™à¿ëSÇ≈džÇÈǩǫǧǩÇîªífÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBgestaltFBCVersion ÇÃÉoÅ[ÉWÉáÉìÇ™ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉRÉìÉpÉCÉãÇ…égópǵÇΩÉCÉìÉ^ÉtÉFÅ[ÉXÇÃÉoÅ[ÉWÉáÉìÇΔàŸÇ»ÇÈèÍçáÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕ FBC Ç÷ÇÃåƒÇ—èoǵÇçsÇÌǻǢÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅB

enum {
    gestaltFBCIndexingState      = 'fbci',
    gestaltFBCindexingSafe       = 0,
    gestaltFBCindexingCritical   = 1
};
                  

gestaltFBCIndexingState ÉZÉåÉNÉ^ÇÕÅAFBC ÇÃåªç›ÇÃçıà¯çÏê¨ÉXÉeÅ[É^ÉXÇ…ä÷Ç∑ÇÈèÓïÒÇï‘ǵNjÇ∑ÅBîCà”ÇÃéûì_Ç≈ÅAçıà¯çÏê¨ÉXÉeÅ[É^ÉXÇÕÅAgestaltFBCindexingSafe Ç‹ÇΩÇÕ gestaltFBCindexingCritical ÇÃÇ¢Ç∏ÇÍǩDžǻÇËÇ‹Ç∑ÅBÉXÉeÅ[É^ÉXÇ™ gestaltFBCindexingCritical ÇÃèÍçáÅAÉXÉeÅ[É^ÉXÇ™ gestaltFBCindexingSafe Ç…ñflÇÈÇ‹Ç≈ÅAé¿çsǵÇΩåüçıÇÕìØä˙íxâÑÇ…ä◊ǡǃǵNjǢNjÇ∑ÅBàÍï˚ÅAï‘Ç≥ÇÍÇΩ FBC çıà¯çÏê¨ÉXÉeÅ[É^ÉXÇ™ gestaltFBCindexingSafe Ç≈džÇÈÇΔÅAÇ∑Ç◊ǃÇÃåüçıÇ™ë¶ç¿Ç…é¿çsÇ≥ÇÍÇ‹Ç∑ÅBìØä˙íxâÑÇâÒîÇ∑ÇÈÇ…ÇÕÅAÉfÉxÉçÉbÉpÇÕ gestaltFBCIndexingState ÉZÉåÉNÉ^ÇÉ`ÉFÉbÉNǵǃÅAï‘Ç≥ÇÍÇΩçıà¯çÏê¨ÉXÉeÅ[É^ÉXÇ™ gestaltFBCindexingSafe ÇÃÇΔÇ´ÇæÇØ FBC Ç÷ÇÃåƒÇ—èoǵÇçsǧÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


åüçıÉZÉbÉVÉáÉìÇégÇ¡ÇΩçÏãΔ

FBC ÇÕÅAÉNÉâÉCÉAÉìÉgÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÅuåüçıÉZÉbÉVÉáÉìÅvÇÃÉIÅ[ÉvÉìÇΔÉNÉçÅ[ÉYÇçsǧDZÇΔÇãñâ¬ÇµÇ‹Ç∑ÅBåüçıÉZÉbÉVÉáÉìÇ…ÇÕÅAåüçıÇÃåãâ ÅAå©Ç¬Ç©Ç¡ÇΩèåèÇ…àÍívÇ∑ÇÈÉtÉ@ÉCÉãÇÃÉäÉXÉgÇä‹ÇflǃÅAåüçıÇ…ä÷Ç∑ÇÈÇ∑Ç◊ǃÇÃèÓïÒÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBFBC ÇÃÉNÉâÉCÉAÉìÉgÇÕÅADZÇÃÉZÉNÉVÉáÉìÇ≈íËã`Ç≥ÇÍǃǢÇÈÉãÅ[É`ÉìÇégǡǃÅAåüçıÉZÉbÉVÉáÉìÇ÷ÇÃéQèΔÇÃéÊìæÅAåüçıÉZÉbÉVÉáÉìÇÃïœçXÅAÇ®ÇÊÇ—åüçıÉZÉbÉVÉáÉìÇÃÉXÉeÅ[É^ÉXÇ…ëŒÇ∑ÇÈÉNÉGÉäÅ[Çé¿çsÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBåüçıÉZÉbÉVÉáÉìÇ÷ÇÃéQèΔÇÕÅAFBC ÉâÉCÉuÉâÉäÇ…ÇÊǡǃèäóLÇ≥ÇÍǃǢÇÈ opaque É|ÉCÉìÉ^å^ÇΔǵǃíËã`Ç≥ÇÍÇ‹Ç∑ÅB

typedef struct OpaqueFBCSearchSession* FBCSearchSession;
                  

åüçıÉZÉbÉVÉáÉìç\ë¢ëÃÇ…ÉAÉNÉZÉXÇ∑ÇÈÇΔÇ´ÇÕÅADZDZÇ≈íËã`Ç≥ÇÍǃǢÇÈÉãÅ[É`ÉìÇÃÇ›ÇégópǵǃÇ≠ÇæÇ≥Ç¢ÅBDZÇÃíÜÇ…ÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃï°êªÇ‚îjä¸ÇçsǧÇΩÇflÇ…ìKêÿÇ» FBC ÉãÅ[É`ÉìÇégópÇ∑ÇÈDZÇΔLJä‹Ç‹ÇÍÇ‹Ç∑ÅBåüçıÉZÉbÉVÉáÉìÇÕï°éGÇ»ÉÅÉÇÉäç\ë¢ëÃÇ≈ÅAǪÇÃíÜÇ…ÇÕÅAåüçıÉZÉbÉVÉáÉìÇï°êªÇ∑ÇÈÇΔÇ´Ç…ÉRÉsÅ[ǵÇΩÇËÅAåüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇâèúÇ∑ÇÈÇΔÇ´Ç…îjä¸Ç∑ÇÈïKóvÇÃdžÇÈǪÇÃëºÇÃÉfÅ[É^Ç÷ÇÃÉ|ÉCÉìÉ^Ç™ä‹Ç‹ÇÍÇ‹Ç∑ÅB

FBC ÉâÉCÉuÉâÉäÇégópÇ∑ÇÈÇΔÇ´Ç…é¿çsÇ∑ÇÈí èÌÇÃèàóùÇÃó¨ÇÍÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃçÏê¨ÅAÉ^Å[ÉQÉbÉgÇΔÇ»ÇÈì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇ…çáÇÌÇπÇΩåüçıÉZÉbÉVÉáÉìÇÃê›íËÅAåüçıÇÃé¿çsÅAåüçıåãâ ÇÃÉNÉGÉäÅ[ÅAǪǵǃåüçıÇÃîjä¸ÇΔǢǧèáèòÇ…Ç»ÇËÇ‹Ç∑ÅBDZÇÃǟǩDžLJâ¬î\Ç»åüçıï˚ñ@ÇΔǵǃÅAåüçıÉZÉbÉVÉáÉìÇçƒèâä˙âªÇµÇƒÅAǪÇÍÇï ÇÃåüçıÇ≈LJåJÇËï‘ǵégópÇ∑ÇÈã@î\ÅAåüçıÉZÉbÉVÉáÉìÇÃÉNÉçÅ[ÉjÉìÉOÇçsÇ¢ÅAÉNÉçÅ[ÉìÇégǡǃÇ≥ÇÁÇ…åüçıÇé¿çsÇ∑ÇÈã@î\ÅAÇ‹ÇΩåüçıåãâ Çì¡íËÇÃÉfÉBÉåÉNÉgÉäÇ…ï€ë∂Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇ…êßå¿Ç∑ÇÈã@î\ǻǫǙópà”Ç≥ÇÍǃǢNjÇ∑ÅB


ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


åüçıÉZÉbÉVÉáÉìÇÃÉZÉbÉgÉAÉbÉv

ÅuÉäÉXÉg 6ÅvÇ…é¶Ç∑ÇÊǧDžÅAêVǵǢÉZÉbÉVÉáÉìÇçÏê¨ÇµÇƒåüçıÇÃèáèòÇêÆÇ¶ÇÈÇ…ÇÕÅAFBC ÉâÉCÉuÉâÉäÇ÷ÇÃè≠Ç»Ç≠ÇΔLJ 2 ǬÇÃåƒÇ—èoǵǙïKóvÇ…Ç»ÇËÇ‹Ç∑ÅBDZÇÃÉTÉìÉvÉãÇ≈ÇÕÅAêVǵǢåüçıÉZÉbÉVÉáÉìÇ™çÏê¨Ç≥ÇÍÅAǪÇÍÇ™çıà¯ÉtÉ@ÉCÉãÇä‹ÇfiÇ∑Ç◊ǃÇÃÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇåüçıÇ∑ÇÈÇÊǧDžê›íËÇ≥ÇÍÇ‹Ç∑ÅBFBCAddAllVolumesToSession ÇåƒÇ—èoÇ∑DZÇΔÇ≈ÅAçıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇÇ∑Ç◊ǃåüçıÇ∑ÇÈåüçıÉZÉbÉVÉáÉìÇ™é©ìÆìIÇ…ê›íËÇ≥ÇÍÇ‹Ç∑ÅB


         
   /* SimpleSetUpSession ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇäÑÇËìñǃÅA
FBCSearchSession ílÇ *session ÉpÉâÉÅÅ[É^Ç…ï‘Ç∑ÅBÉGÉâÅ[Ç™î≠ê∂
Ç∑ÇÈÇΔÅA*session ÇÕéËǬǩÇ∏ÇÃNjNjécÇ≥ÇÍÇÈ */
         
         
            
OSErr SimpleSetUpSession(FBCSearchSession* session) {
    OSErr err;
    FBCSearchSession newsession;
   
        /* ÉçÅ[ÉJÉãïœêîÇÉZÉbÉgÉAÉbÉvÇ∑ÇÈ */
    err = noErr;
    newsession = NULL;
    if (session == NULL) return paramErr;
   
        /* êVǵǢÉZÉbÉVÉáÉìÇçÏê¨Ç∑ÇÈ */
    err = FBCCreateSearchSession(&newsession);
    if (err != noErr) goto bail;
   
        /* égópâ¬î\Ç»ÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇÇ∑Ç◊ǃåüçıÇ∑ÇÈ */
    err = FBCAddAllVolumesToSession(newsession, false);
    if (err != noErr) goto bail;
   
        /* åãâ Çäiî[ǵǃèàóùÇèIóπÇ∑ÇÈ */
    *session = newsession;
    return noErr;
   
bail:
    if (newsession != NULL)
        FBCDestroySearchSession(newsession);
    return err;
}
         

ÉäÉXÉg 6 çıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÉçÅ[ÉJÉãÉ{ÉäÉÖÅ[ÉÄÇÇ∑Ç◊ǃåüçıÇ∑ÇÈåüçıÉZÉbÉVÉáÉìÇÃÉZÉbÉgÉAÉbÉv


åüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÉfÉxÉçÉbÉpÇ™ÇÊÇËè⁄ç◊Ç…êßå‰Ç≈Ç´ÇÈÇÊǧDžÅAFBC Ç…ÇÕÇ≥NjǥNjǻÉãÅ[É`ÉìÇÃÉZÉbÉgÇ™ópà”Ç≥ÇÍǃǢNjÇ∑ÅBÅuÉäÉXÉg 7ÅvÇÕÅAêVǵǢåüçıÉZÉbÉVÉáÉìÇê›íËǵǃÅAì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇÃÉZÉbÉgÇåüçıÇ∑ÇÈï˚ñ@ÇãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅB


         
/* SetUpVolumeSession ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇäÑÇËìñǃÅA
FBCSearchSession ílÇ *session ÉpÉâÉÅÅ[É^Ç…ï‘Ç∑ÅBvCount Ç™É[
ÉçÇÃèÍçáÅAvRefNums ÇÕåüçıëŒè€ÇÃÉ{ÉäÉÖÅ[ÉÄÇ…ëŒÇ∑ÇÈÉ{ÉäÉÖÅ[ÉÄéQ
èΔî‘çÜÇÃîzóÒÇÉ|ÉCÉìÉgÇ∑ÇÈÅBvRefNums ÇÃÇ¢Ç∏ÇÍǩǙçıà¯Çä‹Ç‹Ç»
Ç¢É{ÉäÉÖÅ[ÉÄÇéQèΔǵǃǢÇÈÇΔÅAparamErr Ç™ï‘Ç≥ÇÍÇÈ */
         
            
OSErr SetUpVolumeSession (FBCSearchSession* session,
                            UInt16 vCount, SInt16 *vRefNums) {
    OSErr err;
    UInt16 i;
    FBCSearchSession newsession;
   
        /* ÉçÅ[ÉJÉãïœêîÇÉZÉbÉgÉAÉbÉvÇ∑ÇÈ */
    err = noErr;
    newsession = NULL;
    if (vCount == 0) return paramErr;
    if (session == NULL) return paramErr;
    if (vRefNums == NULL) return paramErr;
   
        /* êVǵǢÉZÉbÉVÉáÉìÇçÏê¨Ç∑ÇÈ */
    err = FBCCreateSearchSession(&newsession);
    if (err != noErr) goto bail;
   
        /* vRefNums Ç≈éwíËÇ≥ÇÍǃǢÇÈÉ{ÉäÉÖÅ[ÉÄÇåüçıÇ∑ÇÈ */
   
    for (i=0; i<vCount; i++) {
        if (!FBCVolumeIsIndexed(vRefNums[i])) {
            err = paramErr;
            goto bail;
        } else {
            err = FBCAddVolumeToSession(newsession,
                                        vRefNums[i]);
            if (err != noErr) goto bail;
        }
    }
	
        /* åãâ Çäiî[ǵǃèàóùÇèIóπÇ∑ÇÈ */
    *session = newsession;
    return noErr;
	
bail:
    if (newsession != NULL)
        FBCDestroySearchSession(newsession);
    return err;
}
         

ÉäÉXÉg 7 ì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇÃÉZÉbÉgÇåüçıÇ∑ÇÈÉZÉbÉVÉáÉìÇÃÉZÉbÉgÉAÉbÉv


DZÇÃÉTÉìÉvÉãÇà FBCAddVolumeToSession ÉãÅ[É`ÉìÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…É{ÉäÉÖÅ[ÉÄÇí«â¡Ç∑ÇÈÇΩÇflÇ…égópÇ≥ÇÍǃǢNjÇ∑ÅBÇ‹ÇΩÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåªç›É^Å[ÉQÉbÉgÇΔǻǡǃǢÇÈÉ{ÉäÉÖÅ[ÉÄDžǬǢǃÉNÉGÉäÅ[ÇçsÇ¡ÇΩÇËÅAíÒãüÇ≥ÇÍǃǢÇÈÉäÉXÉgÇ©ÇÁÉ{ÉäÉÖÅ[ÉÄÇçÌèúÇ∑ÇÈÇΩÇflDžǪÇÃëºÇÃÉãÅ[É`ÉìÇ™égópÇ≥ÇÍǃǢNjÇ∑ÅB

Ç¢Ç≠ǬǩÇÃÉ{ÉäÉÖÅ[ÉÄÇåüçıÇ∑ÇÈÇÊǧDžåüçıÉZÉbÉVÉáÉìÇê›íËÇ∑ÇÈÇΔÅAǪÇÃåüçıÉZÉbÉVÉáÉìÇÕÅA1 ìxåüçıÇçsÇ¡ÇΩå„Ç≈LJÅAÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÇçƒê›íËÇ∑ÇÈDZÇΔÇ»Ç≠åJÇËï‘ǵégópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBåüçıÇé¿çsǵǃåüçıåãâ ÇåüèÿǵÇΩå„ÅAFBCReleaseSessionHits ÉãÅ[É`ÉìÇåƒÇ—èoÇ∑DZÇΔÇ≈ÅAåüçıÉZÉbÉVÉáÉìÇÕéüÇÃåüçıÇçsǧèÄîıÇêÆÇ¶Ç‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÕÅAíºëOÇ…é¿çsǵÇΩåüçıÇÃåãâ ÇÇ∑Ç◊ǃîjä¸ÇµÇ‹Ç∑Ç™ÅAÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇÕǪÇÃNjNjï€éùǵNjÇ∑ÅB

FBCCloneSearchSession ÉãÅ[É`ÉìÇégǡǃåüçıÉZÉbÉVÉáÉìÇÃÉRÉsÅ[ÇçÏê¨Ç∑ÇÈÇΔÅAÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ™ï°êªÇ≥ÇÍÇΩåüçıÉZÉbÉVÉáÉìÇ…ÉRÉsÅ[Ç≥ÇÍÇ‹Ç∑ÅB


ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


åüçıÇÃé¿çs

FBC Ç™åüçıÇé¿çsÇ∑ÇÈÇΔÅAèåèÇ…àÍívÇ∑ÇÈÉtÉ@ÉCÉãÇÃÉäÉXÉgÇ™ê∂ê¨Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃÉäÉXÉgÇÕÅuÉqÉbÉgÅvÇΔåƒÇŒÇÍÅAåüçıÉZÉbÉVÉáÉìÇÃì‡ïîÇ…äiî[Ç≥ÇÍÇ‹Ç∑ÅBFBC Ç≈ÇÕÅAíPåÍÇÃÉäÉXÉgÇä‹ÇfiÉNÉGÉäÅ[ï∂éöóÒÇégópǵÇΩì‡óeÇ…äÓÇ√Ç≠åüçıÅAà»ëOÇÃåüçıÇ≈éÊìæÇµÇΩ 1 ǬNjÇΩÇÕï°êîÇÃÉqÉbÉgÇ…äÓÇ√Ç≠ófiéóåüçıÅAÇ‹ÇΩÇÕÉTÉìÉvÉãÉtÉ@ÉCÉãÇÃÉäÉXÉgÇ…äÓÇ√Ç≠ófiéóåüçıÇÃé¿çsÇóvãÅÇ≈Ç´Ç‹Ç∑ÅBÅuÉäÉXÉg 8ÅvÇÕÅAÉNÉGÉäÅ[Ç…äÓÇ√Ç≠åüçıÇé¿çsÇ∑ÇÈï˚ñ@ÇãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅBDZÇÃÉTÉìÉvÉãÇÃÉNÉGÉäÅ[ÇÕÅAçıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÇ∑Ç◊ǃÇÃÉ{ÉäÉÖÅ[ÉÄÇ≈èåèÇ…àÍívÇ∑ÇÈÉtÉ@ÉCÉãÇåüçıÇ∑ÇÈÇΩÇflÇ…égópÇ≥ÇÍǃǢNjÇ∑ÅB


         
OSErr SimpleFindByQuery (char *query, FBCSearchSession *session) {
    OSErr err;
    FBCSearchSession newsession;
	
        /* ÉçÅ[ÉJÉãïœêîÇÉZÉbÉgÉAÉbÉvǵÅAÉpÉâÉÅÅ[É^ÇÉ`ÉFÉbÉNÇ∑ÇÈ */
    if (query[0] == 0) return paramErr;
    if (session == NULL) return paramErr;
    newsession = NULL;
	
        /* êVǵǢåüçıÉZÉbÉVÉáÉìÇäÑÇËìñǃÇÈ */
    err = SimpleSetUpSession(&newsession);
    if (err != noErr) goto bail;
	
        /* DZÇÍÇÕÅAé¿ç€Ç…åüçıǵǃÅA
           ǪÇÃåãâ ÇåüçıÉZÉbÉVÉáÉìÇ…äiî[Ç∑ÇÈåƒÇ—èoǵ */
    err = FBCDoQuerySearch(newsession, query,
                                   NULL, 0, 100, 100);
    if (err != noErr) goto bail;
	
        /* åãâ Çï€ë∂ǵǃèàóùÇèIóπÇ∑ÇÈ */
    *session = newsession;
    return noErr;
	
bail:
    if (newsession != NULL)
        FBCDestroySearchSession(newsession);
    return err;
}
         

ÉäÉXÉg 8 çıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÇ∑Ç◊ǃÇÃÉ{ÉäÉÖÅ[ÉÄÇëŒè€ÇΔÇ∑ÇÈÉNÉGÉäÅ[Ç…äÓÇ√Ç¢ÇΩåüçı


FBCDoExampleSearch Ç‹ÇΩÇÕ FBCBlindExampleSearch ÉãÅ[É`ÉìÇégǡǃé¿çsÇ≥ÇÍÇÈåüçıÇÕÅAëºÇÃÉtÉ@ÉCÉãÇ…ófiéóǵÇΩÉtÉ@ÉCÉãÇåüèoÇ∑ÇÈÇΩÇflÇ…égópÇ≈Ç´Ç‹Ç∑ÅBófiéóåüçıÇé¿çsÇ∑ÇÈÇΔÅAÉTÉìÉvÉãÇΔǵǃéwíËǵÇΩÉtÉ@ÉCÉãÇΔófiéóǵÇΩì‡óeÇéùǬÉtÉ@ÉCÉãÇ™åüçıÇ≥ÇÍÇ‹Ç∑ÅBÉTÉìÉvÉãÇÕÅAà»ëOÇÃåüçıÇ≈éÊìæÇµÇΩÉqÉbÉgÇéQèΔÇ∑ÇÈçıà¯ÇΔǵǃéwíËÇ∑ÇÈÇ©ÅAÉfÉBÉXÉNè„ÇÃÉtÉ@ÉCÉãÇéQèΔÇ∑ÇÈ FSSpec ÉåÉRÅ[ÉhÇÃÉäÉXÉgÇΔǵǃéwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

FBCDoExampleSearchÅAFBCBlindExampleSearchÅAÇ®ÇÊÇ— FBCDoQuerySearch ÇΔǢǧ 3 ǬÇÃåüçıÉãÅ[É`ÉìÇ≈ÇÕÅAåüçıåãâ Ç 1 ǬNjÇΩÇÕï°êîÇÃÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇ…å¿íËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÇÊǧDžå¿íËÇ∑ÇÈÇ…ÇÕÅAÉNÉâÉCÉAÉìÉgÇ≈ÇÕÉ^Å[ÉQÉbÉgÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ FSSpec ÉåÉRÅ[ÉhÇÃÉäÉXÉgÇíÒãüÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBÅuÉäÉXÉg 9ÅvÇÃÉTÉìÉvÉãÇÕÅAåüçıÇÃåãâ Çì¡íËÇÃÉfÉBÉåÉNÉgÉäÇÃÉZÉbÉgÇ…êßå¿Ç∑ÇÈï˚ñ@DžǬǢǃãÔëÃìIÇ…ê‡ñæÇµÇƒÇ¢Ç‹Ç∑ÅB


         
enum {
    kMaxVols = 20,
    maxHits = 10,
    maxHitTerms = 10
};
   
OSErr RestrictedFindByQuery (char *query, UInt16 dirCount,
                                  FSSpec* dirList,
                                      FBCSearchSession* session) {
    UInt16 vCount, i;
    SInt16 vRefNums[kMaxVols], normalVol;
    FBCSearchSession newsession;
   
    vCount = 0;
    newsession = NULL;
    if (dirList == NULL || dirCount == 0) return paramErr;
    if (query == NULL) return paramErr;
    if (*query == 0) return paramErr;
    if (session == NULL) return paramErr;
   
        /* ÉpÉâÉÅÅ[É^Ç≈éwíËÇ≥ÇÍǃǢÇÈ FSSpec ÇÃÉäÉXÉgÇ©ÇÁ
             ÉÜÉjÅ[ÉNÇ»É{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÇ∑Ç◊ǃé˚èW */
    for (i=0; i<dirCount; i++) {
        Boolean found;
        HParamBlockRec pb;
   
            /* vRefNum Ç™É{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈džÇÈDZÇΔÇämîF */
        pb.volumeParam.ioVRefNum = dirList[i].vRefNum;
        pb.volumeParam.ioNamePtr = NULL;
        pb.volumeParam.ioVolIndex = 0;
        if ((err = PBHGetVInfoSync(&pb)) != noErr) goto bail;
        normalVol = pb.volumeParam.ioVRefNum;
   
            /* ǪÇÍÇ™Ç∑Ç≈Ç…ÉäÉXÉgì‡Ç…ǻǢDZÇΔÇämîF */
        for (found = false, j=0; j<vCount; j++)
            if (vRefNums[j] == normalVol) {
                found = true;
                break;
            }
   
            /* É{ÉäÉÖÅ[ÉÄÇÉäÉXÉgÇ…í«â¡ */
        if (!found && vCount < kMaxVols)
            vRefNums[vCount++] = normalVol;
    }
   
        /* åüèoǵÇΩÉ{ÉäÉÖÅ[ÉÄÇégópÇ∑ÇÈÇÊǧDžÉZÉbÉVÉáÉìÇê›íË */
    err = SetUpVolumeSession(&newsession, vCount, vRefNums);
    if (err != noErr) goto bail;
   
        /* é¿ç€ÇÃåüçıÇçsÇ¢ÅAǪÇÃåãâ ÇåüçıÉZÉbÉVÉáÉìÇ…äiî[ */
    err = FBCDoQuerySearch(newsession, (char*)queryTxt,
                    dirList, dirCount, maxHits, maxHitTerms);
    if (err != noErr) goto bail;
    
        /* åãâ Çï€ë∂ǵǃèàóùÇèIóπ */
    *session = newsession;
    return noErr;
   
bail:
    if (newsession != NULL)
        FBCDestroySearchSession(newsession);
    return err;
}
         

ÉäÉXÉg 9 ì¡íËÇÃÉfÉBÉåÉNÉgÉäÇÃÉZÉbÉgÇëŒè€ÇΔÇ∑ÇÈåüçı


DZÇÃÉTÉìÉvÉãÇ≈ÇÕÅAÉpÉâÉÅÅ[É^ÇΔǵǃéwíËÇ≥ÇÍÇΩÉ^Å[ÉQÉbÉgÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇ©ÇÁíäèoǵÇΩÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇê›íËÇ∑ÇÈÇΩÇflÇ…égópÇ≥ÇÍǃǢNjÇ∑ÅBDZÇÃå„ÅAÉ^Å[ÉQÉbÉgÉfÉBÉåÉNÉgÉäÇÃÉäÉXÉgÇÕ FBCDoQuerySearch Ç…ìnÇ≥ÇÍÇ‹Ç∑ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


åüçıÉZÉbÉVÉáÉìÇ©ÇÁÇÃèÓïÒÇÃéÊìæ

åüçıÉZÉbÉVÉáÉìÇégópǵǃåüçıÇçsÇ¡ÇΩå„ÅAǪÇÃåüçıÉZÉbÉVÉáÉìÇ…ÇÕèåèÇ…àÍívÇ∑ÇÈ 1 ǬNjÇΩÇÕï°êîÇÃÉtÉ@ÉCÉãÇ…ä÷Ç∑ÇÈèÓïÒÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBÉNÉâÉCÉAÉìÉgÇ≈ÇÕÅAÉtÉ@ÉCÉãÇà FSSpec ÉåÉRÅ[ÉhÅAÉtÉ@ÉCÉãÇ…ä‹Ç‹ÇÍÇÈèåèÇ…àÍívǵÇΩíPåÍÅAíºëOÇÃåüçıëÄçÏÇ≈ÉtÉ@ÉCÉãÇ…äÑÇËìñǃÇÁÇÍÇΩÅuÉXÉRÉAÅvÅAÉtÉ@ÉCÉãÇ…ä÷Ç∑ÇÈǪÇÃëºÇÃèÓïÒǻǫÅAå¬ï ÇÃÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇ…ÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÅuÉäÉXÉg 10ÅvÇÕÅAåüçıÇ…ÇÊǡǃï‘Ç≥ÇÍÇΩäeÉqÉbÉgÇÃèÓïÒÇéÊìæÇ∑ÇÈï˚ñ@ÇãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅB


         
typedef OSErr (*HitProc) (FSSpec theDoc,
                             float score,
                             UInt32 nTerms,
                             FBCWordList hitTerms);
   
/* SampleHandleHits ÇÕÅAåüçıåãâ ÇóÒãìÇ∑ÇÈÇΩÇflÇ…åüçıèIóπå„Ç…
    åƒÇ—èoÇ∑DZÇΔÇ™Ç≈Ç´ÇÈÅBǪÇÍǺÇÍÇÃåüçıÉqÉbÉgÇ…ëŒÇµÇƒÅA
    hitFileProc ä÷êîÉpÉâÉÅÅ[É^ÇÕÅAÉ^Å[ÉQÉbÉgÇãLèqÇ∑ÇÈèÓïÒÇégÇ¡
    ǃåƒÇ—èoÇ≥ÇÍÇÈ */
         
OSErr SampleHandleHits (FBCSearchSession session,
                                   HitProc hitFileProc) {	
    OSErr err;
    UInt32 hitCount, i;
    FSSpec targetDoc;
    float targetScore;
    FBCWordList targetTerms;
    UInt32 numTerms;
   
        /* ÉçÅ[ÉJÉãïœêîÇÉZÉbÉgÉAÉbÉvǵÅAÉpÉâÉÅÅ[É^ÇÉ`ÉFÉbÉN */
    targetTerms = NULL;
    if (hitFileProc == NULL) return paramErr;
    if (session == NULL) return paramErr;
   
        /* DZÇÃÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃêîÇÉJÉEÉìÉg */
    err = FBCGetHitCount(session, &hitCount);
    if (err != noErr) goto bail;
   
        /* ÉqÉbÉgëSëÃDžǬǢǃîΩïúèàóùÇé¿çs */
    for (i = 0; i < hitCount; i++) {
   
            /* É^Å[ÉQÉbÉgÇ…Ç»ÇÈèëófiÇà FSSpec ÇéÊìæ */
        err = FBCGetHitDocument(session, i, &targetDoc);
        if (err != noErr) goto bail;
   
            /* DZÇÃèëófiÇÃÉXÉRÉAÇéÊìæ */
        err = FBCGetHitScore(session, i, &targetScore);
        if (err != noErr) goto bail;
   
            /* DZÇÃèëófiÇ…ä‹Ç‹ÇÍÇÈèåèÇ…àÍívǵÇΩíPåÍÇÃÉäÉXÉgÇéÊìæ */
        numTerms = maxHitTerms;
        err = FBCGetMatchedWords(session, i, &numTerms,
                                            &targetTerms);
        if (err != noErr) goto bail;
   
            /* ÉpÉâÉÅÅ[É^ÇΔǵǃéwíËÇ≥ÇÍǃǢÇÈÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇ
            åƒÇ—èoǵÅAèÓïÒÇ…ä÷Ç∑ÇÈâΩÇÁÇ©ÇÃèàóùÇé¿çs */
        err = hitFileProc(&targetDoc, score, numTerms,
                                            targetTerms);
        if (err != noErr) goto bail;
   
            /* éüÇÃîΩïúèàóùÇ…ëJà⁄Ç∑ÇÈëOÇ…ÉNÉäÅ[ÉìÉAÉbÉv */
        FBCDestroyWordList(targetTerms, numTerms);
        targetTerms = NULL;
   
    }
	
    return noErr;
	
bail:
    if (targetTerms != NULL)
        FBCDestroyWordList(targetTerms, numTerms);
    return err;
}
         

ÉäÉXÉg 10 åüçıÉZÉbÉVÉáÉìÇ≈åüèoÇ≥ÇÍÇΩÇ∑Ç◊ǃÇÃÉtÉ@ÉCÉãÇÃóÒãì



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ




ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ

ÉRÉìÉeÉìÉcåüçıÉäÉtÉ@ÉåÉìÉX

DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAPowerPC FBC ÉâÉCÉuÉâÉäÇ÷Çà CFM ÉxÅ[ÉXÇÃÉCÉìÉ^ÉtÉFÅ[ÉXDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉãÅ[É`ÉìÇégópÇ∑ÇÈ PowerPC ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕÅAÅuFind By ContentÅvÇΔǢǧñºëOÇÃÉâÉCÉuÉâÉäÇ…ëŒÇ∑ÇÈÉäÉìÉNÇçsǧïKóvǙdžÇËÇ‹Ç∑ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ

ÉfÅ[É^å^

FBC Ç…ÇÕÅAà»â∫ÇÃÉfÅ[É^å^Ç™ópà”Ç≥ÇÍǃǢNjÇ∑ÅBDZÇÍÇÁÇÃÉfÅ[É^å^Ç…ëŒÇ∑ÇÈãLâØóÃàÊä«óùÇÕ FBC ÉâÉCÉuÉâÉäÇ…ÇÊǡǃíÒãüÇ≥ÇÍÇ‹Ç∑ÅBÉNÉâÉCÉAÉìÉgÇ≈ÇÕÅAMemory Manager ÇÃåƒÇ—èoǵÇégǡǃÅADZÇÍÇÁÇÃç\ë¢ëÃÇÃäÑÇËìñǃNjÇΩÇÕäÑÇËìñǃâèúÇçsÇÌǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅB


FBCSearchSession

typedef struct OpaqueFBCSearchSession* FBCSearchSession;

FBC Ç…ÇÊǡǃçÏê¨Ç≥ÇÍÇΩåüçıÉZÉbÉVÉáÉìÇÕÅADZÇÃÉfÅ[É^å^ÇÃÉ|ÉCÉìÉ^ïœêîÇâÓǵǃéQèΔÇ≥ÇÍÇ‹Ç∑ÅBDZÇÃÉ|ÉCÉìÉ^Ç…ÇÊǡǃéQèΔÇ≥ÇÍÇÈÉfÅ[É^ÇÃÉtÉHÅ[É}ÉbÉgÇÕÅAFBC ÉâÉCÉuÉâÉäå≈óLÇÃì‡ïîìIǻLJÇÃÇ≈Ç∑ÅBÉNÉâÉCÉAÉìÉgÇ≈ÇÕÅADZÇÃÉfÅ[É^Ç÷ÇÃíºê⁄ìIÇ»ÉAÉNÉZÉXÇ‚ïœçXÇǵÇÊǧÇΔǵǻǢÇ≈Ç≈Ç≠ÇæÇ≥Ç¢ÅB

FBCWordItem

typedef char* FBCWordItem;

í èÌÇà C ï∂éöóÒÅBDZÇÃÉfÅ[É^å^ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ©ÇÁÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇéÊìæÇ∑ÇÈÇΔÇ´Ç…égópǵNjÇ∑ÅB

FBCWordList

typedef FBCWordItem* FBCWordList;

WordItems ÇÃîzóÒÅBDZÇÃÉfÅ[É^å^ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ©ÇÁÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇéÊìæÇ∑ÇÈÇΔÇ´Ç…égópǵNjÇ∑ÅB


ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


åüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔèâä˙âª

éüÇÃÉãÅ[É`ÉìÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔîjä¸ÇçsǧÇΩÇflÇ…égópÇ≈Ç´Ç‹Ç∑ÅBåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃêËóLÇ≥ÇÍÇÈãLâØóÃàÊÇÕ FBC Ç…ÇÊǡǃèäóLÇ≥ÇÍǃǮÇËÅAåüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÅAÉRÉsÅ[ÅAÇ®ÇÊÇ—îjä¸Ç…égópÇ≈Ç´ÇÈÇÃÇÕÅADZÇÍÇÁÇÃÉãÅ[É`ÉìÇÃÇ›Ç≈Ç∑ÅB

FBCCreateSearchSession

OSErr FBCCreateSearchSession(
             FBCSearchSession* searchSession);

searchSession ÇÕ FBCSearchSession å^ÇÃïœêîÇÉ|ÉCÉìÉgǵNjÇ∑ÅB

FBCCreateSearchSession ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇäÑÇËìñǃÅAsearchSession Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈïœêîDžǪÇÃåüçıÉZÉbÉVÉáÉìÇ÷ÇÃéQèΔÇï‘ǵNjÇ∑ÅB

FBCDestroySearchSession

OSErr FBCDestroySearchSession(
             FBCSearchSession theSession);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCDestroySearchSession ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃêËóLÇ≥ÇÍǃǢÇÈãLâØóÃàÊÇâï˙ǵNjÇ∑ÅBDZÇÃíÜÇ…ÇÕÅAåüçıÉZÉbÉVÉáÉìÇΔä÷òAÇ√ÇØÇÁÇÍǃǢÇÈÉ{ÉäÉÖÅ[ÉÄê›íËèÓïÒÇΔÉqÉbÉgÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB

FBCCloneSearchSession

OSErr FBCCloneSearchSession(
             FBCSearchSession original,
             FBCSearchSession* clone);

original ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

clone ÇÕ FBCSearchSession å^ÇÃïœêîÇÉ|ÉCÉìÉgǵNjÇ∑ÅB

FBCCloneSearchSession ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇçÏê¨ÇµÅAclone ÉpÉâÉÅÅ[É^Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈïœêîDžǪÇÃåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Çäiî[ǵNjÇ∑ÅBêVǵǢåüçıÉZÉbÉVÉáÉìÇ…ÉRÉsÅ[Ç≥ÇÍÇÈå≥ÇÃåüçıÉZÉbÉVÉáÉìÇÃèÓïÒÇÃíÜÇ…ÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÇΔÇ»ÇÈÉ{ÉäÉÖÅ[ÉÄÇΔÅAà»ëOÇÃåüçıÇ≈åüèoÇ≥ÇÍÇΩÇ∑Ç◊ǃÇÃÉqÉbÉgÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


åüçıÉZÉbÉVÉáÉìÇÃê›íË

åüçıÉZÉbÉVÉáÉìÇê›íËǵǃÅAåüçıëŒè€Çì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄÇÃÉZÉbÉgÇ…êßå¿Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBéüÇÃÉãÅ[É`ÉìÇégópÇ∑ÇÈÇΔÅAÉNÉâÉCÉAÉìÉgÇÕÅAFBC Ç…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉZÉbÉgÇ…ÉAÉNÉZÉXÇ≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅB


FBCAddAllVolumesToSession

OSErr FBCAddAllVolumesToSession(
             FBCSearchSession theSession,
             Boolean includeRemote);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

includeRemote ÇÕÉuÅ[ÉãílÇ≈Ç∑ÅB

FBCAddAllVolumesToSession ÇÕÅAçıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÉ}ÉEÉìÉgÉ{ÉäÉÖÅ[ÉÄÇÇ∑Ç◊ǃåüçıÇ∑ÇÈÇÊǧDžåüçıÉZÉbÉVÉáÉìÇê›íËǵNjÇ∑ÅBincludeRemote Ç™ true ÇÃèÍçáÇÕÅAÉäÉÇÅ[ÉgÉ{ÉäÉÖÅ[ÉÄÇ™åüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÉäÉXÉgÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅBçıà¯Ç™çÏê¨Ç≥ÇÍǃǢǻǢÉ{ÉäÉÖÅ[ÉÄÇÕÅAåüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÉäÉXÉgÇ…í«â¡Ç≥ÇÍÇ‹ÇπÇÒÅB

FBCSetSessionVolumes

OSErr FBCSetSessionVolumes(
             FBCSearchSession theSession,
             const SInt16 *vRefNums,
             UInt16 numVolumes);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

vRefNums ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜ (16 ÉrÉbÉgêÆêî) ÇÃîzóÒÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

numVolumes ÇÕÅAvRefNums îzóÒÇ…ä‹Ç‹ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÃêîÇä‹ÇÒÇæêÆêîílÇ≈Ç∑ÅB

FBCSetSessionVolumes Ç…ÇÊÇËÅAÉNÉâÉCÉAÉìÉgÇÕ 1 ìxÇÃåƒÇ—èoǵÇ≈ÅAåüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÇΔÇ»ÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ…ï°êîÇÃÉ{ÉäÉÖÅ[ÉÄÇí«â¡Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB


FBCAddVolumeToSession

OSErr FBCAddVolumeToSession(
             FBCSearchSession theSession,
             SInt16 vRefNum);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

vRefNum ÇÕ 1 ǬÇÃÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB

FBCAddVolumeToSession ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ… 1 ǬÇÃÉ{ÉäÉÖÅ[ÉÄÇí«â¡ÇµÇ‹Ç∑ÅBçıà¯Ç™çÏê¨Ç≥ÇÍǃǢǻǢÉ{ÉäÉÖÅ[ÉÄÇÕÉäÉXÉgÇ…í«â¡Ç≥ÇÍÇ‹ÇπÇÒÅB

FBCRemoveVolumeFromSession

OSErr FBCRemoveVolumeFromSession(
             FBCSearchSession theSession,
             SInt16 vRefNum);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

vRefNum ÇÕ 1 ǬÇÃÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB

FBCRemoveVolumeFromSession ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ©ÇÁéwíËÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇçÌèúǵNjÇ∑ÅB

FBCGetSessionVolumeCount

OSErr FBCGetSessionVolumeCount(
             FBCSearchSession theSession,
             UInt16* count);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

count ÇÕÅAåãâ Ç™äiî[Ç≥ÇÍÇÈ 16 ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetSessionVolumeCount ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ…ä‹Ç‹ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃêîÇ *count Ç…ï‘ǵNjÇ∑ÅB

FBCGetSessionVolumes

OSErr FBCGetSessionVolumes(
             FBCSearchSession theSession,
             SInt16 *vRefNums,
             UInt16* numVolumes);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

vRefNums ÇÕÅAÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜ (16 ÉrÉbÉgêÆêî) ÇÃîzóÒÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

*numVolumes ÇÕ 16 ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBì¸óÕéûÅADZÇÃílÇÕ vRefNums Ç…äiî[Ç≈Ç´ÇÈóvëfÇÃêîÇ≈Ç∑ÅBÇ‹ÇΩèoóÕéûÇ…ÇÕÅADZÇÃílÇ…ÇÕ vRefNums Ç…é¿ç€Ç…äiî[Ç≥ÇÍǃǢÇÈóvëfÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅB

FBCGetSessionVolumes ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ÇÊǡǃåüçıÇ≥ÇÍÇÈÉ{ÉäÉÖÅ[ÉÄÇÃÉäÉXÉgÇ vRefNums Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒÇ…ï‘ǵNjÇ∑ÅB*numVolumes Ç…ÇÕîzóÒÇ…ï‘Ç≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


åüçıÇÃé¿çs

FBC Ç…ÇÕÅADZÇÃÉZÉNÉVÉáÉìÇ…ãLç⁄Ç≥ÇÍǃǢÇÈåüçıÇé¿çsÇ∑ÇÈÇΩÇflÅA3 ǬÇÃàŸÇ»ÇÈÉãÅ[É`ÉìÇ™ópà”Ç≥ÇÍǃǢNjÇ∑ÅB


FBCGetSessionVolumeCount

OSErr FBCDoQuerySearch(
             FBCSearchSession theSession,		
             char* queryText,
             const FSSpec targetDirs[ ],
             UInt32 numTargets,
             UInt32 maxHits,
             UInt32 maxHitWords);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

queryText ÇÕÅAåüçıÇ∑ÇÈçÄñ⁄Çä‹Çfi C å`éÆÇÃï∂éöóÒÇéQèΔǵNjÇ∑ÅB

targetDirs ÇÕÅAÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBnumTargets Ç™É[ÉçÇÃèÍçáÅADZÇÃÉpÉâÉÅÅ[É^Ç…ÇÕ NULL Çê›íËÇ≈Ç´Ç‹Ç∑ÅB

numTargets Ç…ÇÕÅAtargetDirs Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡Çà FSSpec ÉåÉRÅ[ÉhÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB

maxHits ÇÕï‘Ç≥ÇÍÇÈÉqÉbÉgÇÃç≈ëÂêîÇ≈Ç∑ÅB

maxHitWords ÇÕÉåÉ|Å[ÉgÇ≥ÇÍÇÈÉqÉbÉgǵÇΩíPåÍÇÃç≈ëÂêîÇ≈Ç∑ÅB

FBCDoQuerySearch ÇÕÅAqueryText Ç≈åüèoÇ≥ÇÍÇÈåüçıçÄñ⁄Ç…äÓÇ√Ç¢ÇΩåüçıÇé¿çsǵNjÇ∑ÅBtargetDirs ÉpÉâÉÅÅ[É^Ç™ë∂ç›Ç∑ÇÈÇΔ (numTargets Ç™É[ÉçÇ≈ǻǢÇΔ)ÅAtargetDirs Ç≈éwíËÇ≥ÇÍÇÈÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇæÇØÇ™ÅAåüçıÇ…ÇÊǡǃåüèoÇ≥ÇÍÇÈÉqÉbÉgÇÃíÜÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅB

FBCDoExampleSearch

OSErr FBCDoExampleSearch(
             FBCSearchSession theSession,	
             const UInt32* exampleHitNums,
             UInt32 numExamples,
             const FSSpec targetDirs[ ],
             UInt32 numTargets,
             UInt32 maxHits,
             UInt32 maxHitWords);

theSession Ç…ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç™ä‹Ç‹ÇÍÇ‹Ç∑ÅBDZÇÃÉZÉbÉVÉáÉìÇ…ÇÕÅAà»ëOÇÃåüçıÇ≈ê∂ê¨Ç≥ÇÍÇΩÉqÉbÉgÉäÉXÉgÇ™ä‹Ç‹ÇÍÇƒÇ¢Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

exampleHitNums ÇÕ 32 ÉrÉbÉgêÆêîÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅB

numExamples Ç…ÇÕÅAexampleHitNums Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡ÇÃêÆêîÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB

targetDirs ÇÕÅAÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBnumTargets Ç™É[ÉçÇÃèÍçáÅADZÇÃÉpÉâÉÅÅ[É^Ç…ÇÕ NULL Çê›íËÇ≈Ç´Ç‹Ç∑ÅB

numTargets Ç…ÇÕÅAtargetDirs Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡Çà FSSpec ÉåÉRÅ[ÉhÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB

maxHits ÇÕï‘Ç≥ÇÍÇÈÉqÉbÉgÇÃç≈ëÂêîÇ≈Ç∑ÅB

maxHitWords ÇÕÉåÉ|Å[ÉgÇ≥ÇÍÇÈÉqÉbÉgǵÇΩíPåÍÇÃç≈ëÂêîÇ≈Ç∑ÅB

FBCDoExampleSearch ÇÕÅAëOÇÃåüçıÇ≈åüèoÇ≥ÇÍÇΩÉqÉbÉgÇÉTÉìÉvÉãÇΔǵǃégópǵÅAÉTÉìÉvÉãÉxÅ[ÉXÇÃåüçıÇ‹ÇΩÇÕÅuófiéóÅvåüçıÇé¿çsǵNjÇ∑ÅBexampleHitNums ÇÕÅAÉTÉìÉvÉãÉtÉ@ÉCÉãÇΔǵǃégópÇ≥ÇÍÇÈDZÇΔÇ…Ç»ÇÈ 1 ǬNjÇΩÇÕï°êîÇÃÉqÉbÉgÇÃçıà¯Çä‹Çfií∑êÆêîÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBtargetDirs ÉpÉâÉÅÅ[É^Ç™ë∂ç›Ç∑ÇÈÇΔ (numTargets Ç™É[ÉçÇ≈ǻǢÇΔ)ÅAtargetDirs Ç≈éwíËÇ≥ÇÍÇÈÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇæÇØÇ™ÅAåüçıÇ…ÇÊǡǃåüèoÇ≥ÇÍÇÈÉqÉbÉgÇÃíÜÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅB

FBCBlindExampleSearch

OSErr FBCBlindExampleSearch(
             FSSpec examples[ ],
             UInt32 numExamples,
             const FSSpec targetDirs[ ],
             UInt32 numTargets,
             UInt32 maxHits,
             UInt32 maxHitWords,
             Boolean allIndexes,
             Boolean includeRemote,
             FBCSearchSession* theSession);

examples ÇÕÅAÉtÉ@ÉCÉãÇéQèΔÇ∑ÇÈ FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBFBC ÇÕÅADZÇÍÇÁÇÃÉtÉ@ÉCÉãÇ…ófiéóǵÇΩÉtÉ@ÉCÉãÇåüçıÇ∑ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB

numExamples Ç…ÇÕÅAexamples Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡Çà FSSpec ÉåÉRÅ[ÉhÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB

targetDirs ÇÕÅAÉfÉBÉåÉNÉgÉäÇéQèΔÇ∑ÇÈ FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇÉ|ÉCÉìÉgǵNjÇ∑ÅBnumTargets Ç™É[ÉçÇÃèÍçáÅADZÇÃÉpÉâÉÅÅ[É^Ç…ÇÕ NULL Çê›íËÇ≈Ç´Ç‹Ç∑ÅBtargetDirs Ç™ NULL Ç≈Ç»Ç≠ÅAnumTargets LJÉ[ÉçÇ≈ǻǢèÍçáÇÕÅADZÇÍÇÁÇÃÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇæÇØÇ™åüçıÇ…ÇÊǡǃï‘Ç≥ÇÍÇÈÉqÉbÉgÉäÉXÉgÇÃíÜÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅB

numTargets Ç…ÇÕÅAtargetDirs Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈîzóÒì‡Çà FSSpec ÉåÉRÅ[ÉhÇÃêîÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅB

maxHits ÇÕï‘Ç≥ÇÍÇÈÉqÉbÉgÇÃç≈ëÂêîÇ≈Ç∑ÅB

maxHitWords ÇÕÉåÉ|Å[ÉgÇ≥ÇÍÇÈÉqÉbÉgǵÇΩíPåÍÇÃç≈ëÂêîÇ≈Ç∑ÅB

includeRemote ÇÕÉuÅ[ÉãílÇ≈Ç∑ÅB

theSession ÇÕÅADZÇÃÉãÅ[É`ÉìÇ…ÇÊǡǃçÏê¨Ç≥ÇÍÇÈ FBCSearchSession å^ÇÃïœêîÇÉ|ÉCÉìÉgǵNjÇ∑ÅB

FBCBlindExampleSearch ÇÕêVǵǢåüçıÉZÉbÉVÉáÉìÇçÏê¨ÇµÅAexamples ÉpÉâÉÅÅ[É^Ç≈éwíËÇ≥ÇÍÇΩ FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇ≈éQèΔÇ≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇégǡǃåüçıÇé¿çsǵNjÇ∑ÅBtargetDirs ÉpÉâÉÅÅ[É^Ç™ë∂ç›Ç∑ÇÈÇΔ (numTargets Ç™É[ÉçÇ≈ǻǢÇΔ)ÅAtargetDirs Ç≈éwíËÇ≥ÇÍÇÈÉfÉBÉåÉNÉgÉäÇ…äiî[Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇæÇØÇ™ÅAåüçıÇ…ÇÊǡǃåüèoÇ≥ÇÍÇÈÉqÉbÉgÇÃíÜÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅBincludeRemote Ç™ true ÇÃèÍçáÇÕÅAÉäÉÇÅ[ÉgÉ{ÉäÉÖÅ[ÉÄÇ™åüçıÉZÉbÉVÉáÉìÇÃÉ^Å[ÉQÉbÉgÉ{ÉäÉÖÅ[ÉÄÉäÉXÉgÇ…ëgÇ›çûÇ‹ÇÍÇ‹Ç∑ÅB

ÉTÉìÉvÉãÉtÉ@ÉCÉãÇÃàÍïîÇ…çıà¯Ç™çÏê¨Ç≥ÇÍǃǢǻǢèÍçáÇÕÅAçıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇégǡǃåüçıÇ™é¿çsÇ≥ÇÍÅAåüçıèIóπå„ÅAÉGÉâÅ[ÉRÅ[Éh kFBCsomeFilesNotIndexed Ç™ï‘Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃèÍçáÅAåüçıÉZÉbÉVÉáÉìÇ™çÏê¨Ç≥ÇÍÅAǪÇÃåüçıÉZÉbÉVÉáÉìÇ÷ÇÃéQèΔÇ™ *theSession Ç…ï‘Ç≥ÇÍÇ‹Ç∑ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


ÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ

åüçıèIóπå„ÇÃåüçıÉZÉbÉVÉáÉìÇ…ÇÕÅAåüçıéûÇ…åüèoÇ≥ÇÍÇΩÉqÉbÉgÇÃÉäÉXÉgÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBDZÇÃÉZÉNÉVÉáÉìÇ…ãLç⁄Ç≥ÇÍǃǢÇÈÇÈÉãÅ[É`ÉìÇégǡǃÅAÉNÉâÉCÉAÉìÉgÇÕåüçıÉZÉbÉVÉáÉìì‡Ç…äiî[Ç≥ÇÍǃǢÇÈÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇ…ÉAÉNÉZÉXÇ≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅBÉqÉbÉgÉåÉRÅ[ÉhÇ…ÇÕ 0 Ç©ÇÁ count-1 Ç‹Ç≈ÇÃÉCÉìÉfÉbÉNÉXÇ™ïtÇØÇÁÇÍÇ‹Ç∑ÅB


FBCGetHitCount

OSErr FBCGetHitCount(
             FBCSearchSession theSession,
             UInt32* count);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

count ÇÕ 32 ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetHitCount ÇÕÅAcount Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈïœêîÇ…åüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃêîÇê›íËǵNjÇ∑ÅBÉqÉbÉgÉåÉRÅ[ÉhÇ…ÇÕ 0 Ç©ÇÁ count-1 Ç‹Ç≈ÇÃÉCÉìÉfÉbÉNÉXÇ™ïtÇØÇÁÇÍÇ‹Ç∑ÅB

Å@

FBCGetHitDocument

OSErr FBCGetHitDocument(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             FSSpec* theDocument);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

hitNumber ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXílÇ≈Ç∑ÅB

theDocument ÇÕ FSSpec ÉåÉRÅ[ÉhÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetHitDocument ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃÇ§ÇøÅAÉCÉìÉfÉbÉNÉXÇ™ hitNumber Ç≈džÇÈÉqÉbÉgÇ…ëŒâûÇ∑ÇÈ FSSpec ÉåÉRÅ[ÉhÇï‘ǵNjÇ∑ÅB


FBCGetHitScore

OSErr FBCGetHitScore(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             float* score);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

hitNumber ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXílÇ≈Ç∑ÅB

score ÇÕïÇìÆè¨êîì_å^ÇÃïœêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetHitScore ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃÇ§ÇøÅAÉCÉìÉfÉbÉNÉXÇ™ hitNumber Ç≈džÇÈÉqÉbÉgÇ…äÑÇËìñǃÇÁÇÍǃǢÇÈë√ìñê´ÉXÉRÉAÇï‘ǵNjÇ∑ÅBDZÇÃÉXÉRÉAÇÕÅAíºëOÇ…é¿çsǵÇΩì¡íËÇÃåüçıÉRÉìÉeÉLÉXÉgÇ≈ÇÃåüçıèåèÇ…ëŒÇ∑ÇÈèëófiÇÃë√ìñê´Çï\Ç∑é⁄ìxÇ≈Ç∑ÅBÉXÉRÉAÇÕ 0.0 - 1.0 ÇÃîÕàÕÇ…ïWèÄâªÇ≥ÇÍÅAëŒè€ÇΔÇ»ÇÈåüçıÇÃíÜÇ≈ç≈LJë√ìñê´ÇÃçÇÇ¢ÉqÉbÉgÇÕèÌÇ… 1.0 ÇΔǢǧÉXÉRÉAÇéùÇøÇ‹Ç∑ÅB


FBCGetMatchedWords

OSErr FBCGetMatchedWords(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             UInt32* wordCount,
             FBCWordList* list);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

hitNumber ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXílÇ≈Ç∑ÅB

wordCount ÇÕ 32 ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

list ÇÕ FBCWordList å^ÇÃïœêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetMatchedWords ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃÇ§ÇøÅAÉCÉìÉfÉbÉNÉXÇ™ hitNumber Ç≈džÇÈÉqÉbÉgÇ…ëŒâûÇ∑ÇÈèåèÇ…àÍívǵÇΩíPåÍÇÃÉäÉXÉgÇï‘ǵNjÇ∑ÅBDZÇÃíPåÍÇÃÉäÉXÉgÇÕÅAǪÇÃÉqÉbÉgÇ™ï‘Ç≥ÇÍÇΩóùóRÇãÔëÃìIÇ…é¶ÇµÇ‹Ç∑ÅBílÇ™ï‘Ç≥ÇÍÇÈÇΔÇ´ÅA*list Ç…ÇÕíPåÍÉäÉXÉgç\ë¢ëÃÇ÷ÇÃÉ|ÉCÉìÉ^Ç™ä‹Ç‹ÇÍÅA*wordCount Ç…ÇÕǪÇÃç\ë¢ëÃÇ…ä‹Ç‹ÇÍÇÈÉGÉìÉgÉäÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅBǻǮÅAèàóùÇ™èIóπǵÇΩÇΔÇ´Ç…ÇÕÅAFBCDestroyWordList ÇåƒÇ—èoǵǃÅADZÇÃç\ë¢ëÃÇämé¿Ç…îjä¸ÇµÇƒÇ≠ÇæÇ≥Ç¢ÅB

ÉqÉbÉgÇ…ëŒâûÇ∑ÇÈèåèÇ…àÍívǵÇΩíPåÍÇÕÉqÉbÉgǪÇÃLJÇÃÇÃíÜÇ…äiî[Ç≥ÇÍÇÈÇΩÇflÅAǪÇÍÇÁÇÃåüçıÇÕçÇë¨Ç…é¿çsÇ≥ÇÍÇ‹Ç∑ÅB


FBCGetTopicWords

OSErr FBCGetTopicWords(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             UInt32* wordCount,
             FBCWordList* list);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

hitNumber ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÉåÉRÅ[ÉhÇéQèΔÇ∑ÇÈÉCÉìÉfÉbÉNÉXílÇ≈Ç∑ÅB

wordCount ÇÕ 32 ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

list ÇÕ FBCWordList å^ÇÃïœêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCGetTopicWords ÇÕÅAåüçıÉZÉbÉVÉáÉìÇ…ä‹Ç‹ÇÍÇÈÉqÉbÉgÇÃÇ§ÇøÅAÉCÉìÉfÉbÉNÉXÇ™ hitNumber Ç≈džÇÈÉqÉbÉgÇ…ëŒâûÇ∑ÇÈÉgÉsÉbÉNÇï\Ç∑íPåÍÇÃÉäÉXÉgÇï‘ǵNjÇ∑ÅBDZÇÃíPåÍÇÃÉäÉXÉgÇÕÅAÅuâΩÇ…ä÷Ç∑ÇÈèëófiÇ»ÇÃÇ©ÅvÇΔǢǧñ‚ǢDžëŒÇ∑ÇÈéËǙǩÇËÇó^ǶNjÇ∑ÅBílÇ™ï‘Ç≥ÇÍÇÈÇΔÇ´ÅA*list Ç…ÇÕíPåÍÉäÉXÉgç\ë¢ëÃÇ÷ÇÃÉ|ÉCÉìÉ^Ç™ä‹Ç‹ÇÍÅA*wordCount Ç…ÇÕǪÇÃç\ë¢ëÃÇ…ä‹Ç‹ÇÍÇÈÉGÉìÉgÉäÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅBǻǮÅAèàóùÇ™èIóπǵÇΩÇΔÇ´Ç…ÇÕÅAFBCDestroyWordList ÇåƒÇ—èoǵǃÅADZÇÃç\ë¢ëÃÇämé¿Ç…îjä¸ÇµÇƒÇ≠ÇæÇ≥Ç¢ÅB

ì¡íËÇÃÉqÉbÉgÇ…ëŒâûÇ∑ÇÈÉgÉsÉbÉNÇï\Ç∑íPåÍÇÃÉäÉXÉgÇÕçıà¯ÉtÉ@ÉCÉãÇâÓǵǃê∂ê¨Ç≥ÇÍÇÈïKóvǙdžÇÈÇΩÇflÅADZÇÃåƒÇ—èoǵÇÃé¿çsÇÕ FBCGetMatchedWords ÇÃé¿çsÇÊÇËLJǩǻÇËíxÇ≠Ç»ÇËÇ‹Ç∑ÅB


FBCDestroyWordList

OSErr FBCDestroyWordList(
             FBCWordList theList,
             UInt32 wordCount);

theList ÇÕíPåÍÉäÉXÉgÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

wordCount ÇÕÉäÉXÉgÇ…ä‹Ç‹ÇÍÇÈíPåÍÇÃêîÇ≈Ç∑ÅB

FBCDestroyWordList ÇÕÅAFBCGetMatchedWords Ç‹ÇΩÇÕ FBCGetTopicWords Ç…ÇÊǡǃäÑÇËìñǃÇÁÇÍÇΩíPåÍÉäÉXÉgÇîjä¸ÇµÇ‹Ç∑ÅB

FBCReleaseSessionHits

OSErr FBCReleaseSessionHits(
             FBCSearchSession theSession);

theSession ÇÕåüçıÉZÉbÉVÉáÉìÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBDZÇÃÉZÉbÉVÉáÉìÇ…ÇÕåüçıÇ…ÇÊǡǃê∂ê¨Ç≥ÇÍÇΩÉqÉbÉgÇ™ä‹Ç‹ÇÍÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅB

FBCReleaseSessionHits ÇÕÅAíºëOÇÃåüçıÇ≈éÊìæÇµÇΩÉqÉbÉgÇ…ä÷òAÇ∑ÇÈäiî[èÓïÒÇåüçıÉZÉbÉVÉáÉìÇ©ÇÁçÌèúǵNjÇ∑ÅBÇΩÇæÇµÅAÉ{ÉäÉÖÅ[ÉÄê›íËèÓïÒÇÕǪÇÃNjNjï€éùÇ≥ÇÍÇÈÇΩÇflÅADZÇÃåƒÇ—èoǵÇÃé¿çså„ÅAåüçıÉZÉbÉVÉáÉìÇÕéüÇÃåüçıÇé¿çsÇ∑ÇÈèÄîıÇêÆÇ¶Ç‹Ç∑ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


ÉeÉLÉXÉgÇÃóvñÒ

DZÇÃåƒÇ—èoǵÇÕÅAì¸óÕÉeÉLÉXÉgÇÃíÜÇ≈åüèoÇ≥ÇÍÇΩÅuç≈LJë√ìñê´ÇÃçÇÇ¢ÅvÉZÉìÉeÉìÉXÇä‹ÇfióvñÒÇê∂ê¨ÇµÇ‹Ç∑ÅB


FBCSummarize

OSErr FBCSummarize(
             void* inBuf,
             UInt32 inLength,
             void* outBuf,
             UInt32* outLength,
             UInt32* numSentences);

inBuf ÇÕóvñÒÇ≥ÇÍÇÈÉeÉLÉXÉgÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

inLength ÇÕ inBuf Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈÉeÉLÉXÉgÇÃí∑Ç≥Ç≈Ç∑ÅB

outBuf ÇÕóvñÒÇ™äiî[Ç≥ÇÍÇÈÉoÉbÉtÉ@ÇÉ|ÉCÉìÉgǵNjÇ∑ÅB

outLength ÇÕ 32 ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBì¸óÕéûÅADZÇÃílÇ…ÇÕ outBuf Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈÉoÉbÉtÉ@ÇÃÉTÉCÉYÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅBÇ‹ÇΩèoóÕéûÇ…ÇÕÅAoutBuf Ç…ÇÊǡǃÉ|ÉCÉìÉgÇ≥ÇÍÇÈÉoÉbÉtÉ@Ç…äiî[Ç≥ÇÍǃǢÇÈÉfÅ[É^ÇÃé¿ç€ÇÃí∑Ç≥Ç™ê›íËÇ≥ÇÍÇ‹Ç∑ÅB

numSentences ÇÕ 32 ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅBì¸óÕéûÅADZÇÃílÇÕóvñÒÇΔǵǃñ]NjǵǢÉZÉìÉeÉìÉXÇÃç≈ëÂêîÇ≈Ç∑ÅBÇ‹ÇΩèoóÕéûÇ…ÇÕÅADZÇÃílÇ…ÇÕê∂ê¨Ç≥ÇÍÇΩÉZÉìÉeÉìÉXÇÃé¿ç€ÇÃêîÇ™ê›íËÇ≥ÇÍÇ‹Ç∑ÅBì¸óÕéûÇ… numSentences Ç™ 0 Ç≈džÇÈÇΔÅAFBC ÇÕì¸óÕÉoÉbÉtÉ@Ç…ä‹Ç‹ÇÍǃǢÇÈÉZÉìÉeÉìÉXÇÃêîÇéÊÇËèoǵÅAǪÇÍÇ 10 Ç≈èúéZǵNjÇ∑ÅBǪÇÃåvéZåãâ Ç™ 0 ÇÃèÍçáÇÕÅAç≈ëÂêîÇÃílÇΔǵǃ 1 Ç™égópÇ≥ÇÍÇ‹Ç∑ÅBÇ‹ÇΩÅAǪÇÃåvéZåãâ Ç™ 10 Çí¥Ç¶ÇÈèÍçáÇÕÅAç≈ëÂêîÇÃílÇΔǵǃ 10 Ç™égópÇ≥ÇÍÇ‹Ç∑ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


É{ÉäÉÖÅ[ÉÄÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ

FBC Ç…ÇÕÅAÉ{ÉäÉÖÅ[ÉÄÇ…ä÷Ç∑ÇÈèÓïÒÇ…ÉAÉNÉZÉXÇ∑ÇÈà»â∫ÇÃÇÊǧǻÉÜÅ[ÉeÉBÉäÉeÉBÉãÅ[É`ÉìÇ™ópà”Ç≥ÇÍǃǢNjÇ∑ÅB


FBCVolumeIsIndexed

Boolean FBCVolumeIsIndexed (SInt16 theVRefNum);

theVRefNum ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB

FBCVolumeIsIndexed ÇÕÅAéwíËÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇ…çıà¯Ç™çÏê¨Ç≥ÇÍǃǢÇÈèÍçáÇ… true Çï‘ǵNjÇ∑ÅB

FBCVolumeIsRemote

Boolean FBCVolumeIsRemote(SInt16 theVRefNum);

theVRefNum ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB

FBCVolumeIsRemote ÇÕÅAéwíËÇ≥ÇÍÇΩÉ{ÉäÉÖÅ[ÉÄÇ™ÉäÉÇÅ[ÉgÉTÅ[Éoè„DždžÇÈèÍçáÇ… true Çï‘ǵNjÇ∑ÅBÉNÉâÉCÉAÉìÉgÇ≈ÇÕÅAÉlÉbÉgÉèÅ[ÉNÉ{ÉäÉÖÅ[ÉÄÇåüçıëŒè€Ç©ÇÁèúäOǵǃÅAÉlÉbÉgÉèÅ[ÉNÇÃíxâÑÇâÒîÇ≈Ç´Ç‹Ç∑ÅB

FBCVolumeIndexTimeStamp

OSErr FBCVolumeIndexTimeStamp(SInt16 theVRefNum,
             UInt32* timeStamp);

theVRefNum ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB

timeStamp ÇÕïÑçÜǻǵ 32 ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

FBCVolumeIndexTimeStamp ÇÕÅAÉ{ÉäÉÖÅ[ÉÄÇÃçıà¯Ç™ç≈å„Ç…çXêVÇ≥ÇÍÇΩì˙éûÇï‘ǵNjÇ∑ÅBtimeStamp Ç…ï‘Ç≥ÇÍÇÈílÇÕÅAGetDateTime Ç…ÇÊǡǃï‘Ç≥ÇÍÇÈílÇΔìØÇ∂ÉtÉHÅ[É}ÉbÉgÇ≈Ç∑ÅB

FBCVolumeIndexPhysicalSize

OSErr FBCVolumeIndexPhysicalSize(SInt16 theVRefNum,
             UInt32* size);

theVRefNum ÇÕÉ{ÉäÉÖÅ[ÉÄéQèΔî‘çÜÇ≈Ç∑ÅB

size ÇÕïÑçÜǻǵ 32 ÉrÉbÉgêÆêîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB


FBCVolumeIndexPhysicalSize ÇÕÉ{ÉäÉÖÅ[ÉÄÇÃçıà¯ÉtÉ@ÉCÉãÇÃÉTÉCÉYÇÉoÉCÉgíPà Ç≈ï‘ǵNjÇ∑ÅB


ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


É{ÉäÉÖÅ[ÉÄÅAÉtÉHÉãÉ_ÅAÇ®ÇÊÇ—ÉtÉ@ÉCÉãÇÃçıà¯çÏê¨

ÉRÉìÉeÉìÉcåüçıÇ…ÇÕêVǵǢ API Ç™í«â¡Ç≥ÇÍÅAêVãKÉtÉ@ÉCÉãÇ‹ÇΩÇÕïœçXÇ≥ÇÍÇΩÉtÉ@ÉCÉãÇÃçıà¯Çë¶ç¿Ç…çÏê¨Ç≈Ç´ÇÈÇÊǧDžǻÇËNjǵÇΩÅBêVǵǢÉãÅ[É`ÉìÇÕéüÇÃÇÊǧDžêÈåæÇ≥ÇÍÇ‹Ç∑ÅB


FBCIndexItems

OSErr FBCIndexItems(
     FSSpecArrayPtr theItems,
     UInt32 itemCount);

theItems ÇÕÅAçıà¯ÇçÏê¨Ç∑ÇÈÉtÉ@ÉCÉãÇéQèΔÇ∑ÇÈ FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

itemCount ÇÕ FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇ…ä‹Ç‹ÇÍÇÈçÄñ⁄ÇÃêîÇ≈Ç∑ÅB

FBCIndexItems ÇÕÅAêÊì™ÇÃÉpÉâÉÅÅ[É^Ç…É|ÉCÉìÉ^ÇΔǵǃìnÇ≥ÇÍÇΩ FSSpec ÉåÉRÅ[ÉhÇÃîzóÒÇÃíÜÇ≈éQèΔÇ≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇÃçıà¯ÇçÏê¨ÇµÇ‹Ç∑ (Ç‹ÇΩÇÕçıà¯ÇçÏê¨ÇµíºÇµÇ‹Ç∑)ÅBÉtÉ@ÉCÉãÇä‹ÇfiÉ{ÉäÉÖÅ[ÉÄÇ™Ç∑Ç≈Ç…çıà¯ÇéùǡǃǢÇÈèÍçáÅAǪÇÃèëófiÇÕä˘ë∂ÇÃçıà¯Ç…í«â¡Ç≥ÇÍÅAçıà¯Ç™çƒìxçÏê¨Ç≥ÇÍÇ‹Ç∑ÅBÇ‹ÇΩÅAÉ{ÉäÉÖÅ[ÉÄÇ…çıà¯Ç™ä‹Ç‹ÇÍǃǢǻǢèÍçáÇÕÅAêVǵǢçıà¯Ç™çÏê¨Ç≥ÇÍÇ‹Ç∑ÅB

í èÌÅAFBCIndexItems ÇÕÅAçıà¯Çä‹ÇfiÉ{ÉäÉÖÅ[ÉÄÇ≈ÉtÉ@ÉCÉãÇï€ë∂ (Ç‹ÇΩÇÕÉtÉ@ÉCÉãÇçXêV) ǵÇΩå„Ç…åƒÇ—èoǵNjÇ∑ÅBDZÇÍÇ…ÇÊÇËÅAÉÜÅ[ÉUÇÕì¡Ç…âΩÇÁÇ©ÇÃëÄçÏÇçsǧDZÇΔÇ»Ç≠ÅAçıà¯ÇèÌÇ…ç≈êVÇÃèÛë‘Ç…ï€Ç¬Ç±ÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉ{ÉäÉÖÅ[ÉÄÇ…çıà¯Ç™ä‹Ç‹ÇÍǃǢÇÈǩǫǧǩÇîªífÇ∑ÇÈï˚ñ@DžǬǢǃÇÕÅASherlock ÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB

å›ä∑ê´Ç…ä÷Ç∑ÇÈíçà”
FBCIndexItems ÇΔǢǧÉVÉìÉ{ÉãÇÕÅAÅuÉRÉìÉeÉìÉcåüçıÅvã§óLÉâÉCÉuÉâÉäÇÃÉIÉäÉWÉiÉãÉoÅ[ÉWÉáÉìÇ©ÇÁÉGÉNÉXÉ|Å[ÉgÇ≥ÇÍǃǢNjÇπÇÒÅBDZÇÃÉãÅ[É`ÉìÇégópÇ∑ÇÈïKóvÇÃdžÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕÅADZÇÃÉVÉìÉ{ÉãÇ÷ÇÃé„Ç¢ÉäÉìÉNÇçsÇ¢ÅAÇ≥ÇÁÇ…é¿ç€Ç…åƒÇ—èoǵǃǛÇÈëOÇ…ÅADZÇÃÉãÅ[É`ÉìÇ™ë∂ç›Ç∑ÇÈǩǫǧǩÇÉeÉXÉgǵǃÇ≠ÇæÇ≥Ç¢ÅBDZÇÍÇçsǧÇΩÇflÇÃÉeÉNÉjÉbÉNDžǬǢǃÇÕÅAÉeÉNÉjÉJÉãÉmÅ[ÉgÅuTN1083 Code Fragment Manager ÉxÅ[ÉXÇÃã§óLÉâÉCÉuÉâÉäÇ÷ÇÃé„Ç¢ÉäÉìÉNÅvÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


ÉqÅ[ÉvÉXÉyÅ[ÉXÇÃó\ñÒ

FBC ÇÃÉNÉâÉCÉAÉìÉgÇÕÅAåüçıÇé¿çsÇ∑ÇÈëOÇ…ÅAÉqÅ[ÉvÉ]Å[ÉìÇÃíÜÇ…ÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇ≈égópÇ∑ÇÈÉXÉyÅ[ÉXÇó\ñÒÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB


FBCSetHeapReservation

void FBCSetHeapReservation(UInt32 bytes);

bytes ÇÕó\ñÒÇ∑ÇÈÉoÉCÉgêîÇä‹ÇfiêÆêîílÇ≈Ç∑ÅB

FBCSetHeapReservation ÇÕÅAåüçıíÜÇ…ÉNÉâÉCÉAÉìÉgÇÃÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇ™åƒÇ—èoÇ≥ÇÍÇÈÇΩÇ—Ç…ÅAFBC Ç™ï€èÿÇ∑ÇÈÉNÉâÉCÉAÉìÉgÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉqÅ[ÉvÇ≈égópâ¬î\Ç»ÉoÉCÉgêîÇê›íËǵNjÇ∑ÅBDZÇÃÉãÅ[É`ÉìÇåƒÇ—èoǵǃÉqÅ[ÉvÉXÉyÅ[ÉXÇñæé¶ìIÇ…ó\ñÒǵǻǢÇΔÅA200K ÇÃÉXÉyÅ[ÉXÇ™é©ìÆìIÇ…ó\ñÒÇ≥ÇÍÇ‹Ç∑ÅB



ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


ÉAÉvÉäÉPÅ[ÉVÉáÉìíËã`ÇÃÉãÅ[É`Éì

ÉNÉâÉCÉAÉìÉgÇÕåüçıíÜÇ…íËä˙ìIÇ…åƒÇ—èoÇ≥ÇÍÇÈÉãÅ[É`ÉìÇéwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÕÅAåüçıÇÃÉXÉeÅ[É^ÉXÇ…ä÷Ç∑ÇÈèÓïÒÇΔÅAåüçıÇ™äÆóπÇ∑ÇÈëOÇ…åüçıÇÉLÉÉÉìÉZÉãÇ∑ÇÈÉIÉvÉVÉáÉìÇÃóºï˚ÇÉNÉâÉCÉAÉìÉgÇ…íÒãüǵNjÇ∑ÅB

ÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇÕéüÇÃÇÊǧDžíËã`Ç≥ÇÍÇ‹Ç∑ÅB


FBCCallbackProcPtr

typedef Boolean (*FBCCallbackProcPtr)(
             UInt16 phase,
             float percentDone,
             void *data);

phase ÇÕÅAåüçıÇÃåªç›ÇÃÉXÉeÅ[É^ÉXÇé¶Ç∑ÅAà»â∫ÇÃíËêîÇÃÇ¢Ç∏ÇÍÇ©Çä‹ÇÒÇæ 16 ÉrÉbÉgêÆêîÇ≈Ç∑

    enum {
        kFBCphSearching             = 6,
        kFBCphMakingAccessAccessor  = 7,
        kFBCphAccessWaiting         = 8,
        kFBCphSummarizing           = 9,
        kFBCphIdle                  = 10,
        kFBCphCanceling             = 11
    };

percentDone ÇÕ 0.0 - 1.0 ÇÃîÕàÕÇÃêiíªèÛãµÇé¶Ç∑ílÇ≈Ç∑ÅB

data Ç…ÇÕÅAFBCSetCallback Çà data ÉpÉâÉÅÅ[É^Ç…éwíËǵÇΩílÇΔìØÇ∂ílÇ™ä‹Ç‹ÇÍÇ‹Ç∑

åüçıÇ™êiçsǵǃǢÇÈä‘Ç…ÉVÉXÉeÉÄÇÃÉçÉbÉNÉAÉbÉvÇ™î≠ê∂Ç∑ÇÈÇÃÇñhÇÆÇΩÇflÅAÉRÅ[ÉãÉoÉbÉNÇ™íºê⁄ìIÇ‹ÇΩÇÕä‘ê⁄ìIÇ… WaitNextEvent ÇåƒÇ—èoÇ∑ÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅB

ÉRÅ[ÉãÉoÉbÉNä÷êîÇ™ true Çï‘Ç∑ÇΔÅAêiçsíÜÇÃåüçıÇÕÉLÉÉÉìÉZÉãÇ≥ÇÍÇ‹Ç∑ÅB


FBCSetCallback

void FBCSetCallback(FBCCallbackProcPtr fn, void* data);

fn ÇÕégópÇ∑ÇÈÉRÅ[ÉãÉoÉbÉNä÷êîÇ÷ÇÃÉ|ÉCÉìÉ^Ç≈Ç∑ÅB

data ÇÕégópÇ∑ÇÈÉRÅ[ÉãÉoÉbÉNä÷êîÇ…ìnÇ≥ÇÍÇÈílÇ≈Ç∑ÅB


FBCSetCallback ÇÕÅAåüçıíÜÇ…åƒÇ—èoÇ≥ÇÍÇÈÉRÅ[ÉãÉoÉbÉNä÷êîÇê›íËǵNjÇ∑ÅBÉNÉâÉCÉAÉìÉgÇ™ÉRÅ[ÉãÉoÉbÉNä÷êîÇíËã`ǵǃǢǻǢèÍçáÇÕÅAÉfÉtÉHÉãÉgÇÃÉRÅ[ÉãÉoÉbÉNä÷êîÇ™égópÇ≥ÇÍÇ‹Ç∑ÅBÉfÉtÉHÉãÉgÇÃÉRÅ[ÉãÉoÉbÉNä÷êîÇÕ WaitNextEvent ÇåƒÇ—èoǵǃÅAfalse Çï‘ǵNjÇ∑ÅB


ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ



ÉRÉìÉeÉìÉcåüçıÇà C åæåÍÉTÉ}Éä


íËêî

enum {
    gestaltFBCIndexingState      = 'fbci',
    gestaltFBCindexingSafe       = 0,
    gestaltFBCindexingCritical   = 1
};
   
   
enum {
    gestaltFBCVersion            = 'fbcv',
    gestaltFBCCurrentVersion     = 0x0011
};
   
enum { /* ÉGÉâÅ[ÉRÅ[Éh */
    kFBCvTwinExceptionErr     = -30500,
                    /*ǪÇÃëºÇÃÉGÉâÅ[*/
    kFBCnoIndexesFound        = -30501,
    kFBCallocFailed           = -30502,
                    /*ǪÇÃëºÇÃÉGÉâÅ[*/
    kFBCbadParam              = -30503,
    kFBCfileNotIndexed        = -30504,
    kFBCbadIndexFile          = -30505,
                    /*ïsê≥Ç» FSSpecÅAÇ‹ÇΩÇÕÉtÉ@ÉCÉãì‡ÇÃÉfÅ[É^Ç™ïsê≥*/
    kFBCtokenizationFailed    = -30512,
                    /*èëófiÇ‹ÇΩÇÕÉNÉGÉäÅ[Ç©ÇÁì«Ç›çûǛǙÇ≈ǴǻǢ*/
    kFBCindexNotFound         = -30518,
    kFBCnoSearchSession       = -30519,
    kFBCaccessCanceled        = -30521,
    kFBCindexNotAvailable     = -30523,
    kFBCsearchFailed          = -30524,
    kFBCsomeFilesNotIndexed   = -30525,
    kFBCillegalSessionChange  = -30526,
                    /*ÉqÉbÉgÇä‹ÇfiÉZÉbÉVÉáÉìÇ… */
                    /*É{ÉäÉÖÅ[ÉÄÇÃí«â¡Ç‹ÇΩÇÕçÌèúÇééÇ›ÇΩ*/
    kFBCanalysisNotAvailable  = -30527,
    kFBCbadIndexFileVersion   = -30528,
    kFBCsummarizationCanceled = -30529,
    kFBCbadSearchSession      = -30531,
    kFBCnoSuchHit             = -30532
};
   
enum { /* ÉRÅ[ÉãÉoÉbÉNÉãÅ[É`ÉìÇ…ëóÇÁÇÍÇΩÉRÅ[Éh */
    kFBCphSearching             = 6,
    kFBCphMakingAccessAccessor  = 7,
    kFBCphAccessWaiting         = 8,
    kFBCphSummarizing           = 9,
    kFBCphIdle                  = 10,
    kFBCphCanceling             = 11
};

ÉfÅ[É^å^

    /* åüçıÇ…ëŒÇ∑ÇÈÉXÉeÅ[É^ÉXèÓïÒÇÃÉRÉåÉNÉVÉáÉì*/
typedef struct OpaqueFBCSearchSession* FBCSearchSession;
   
    /* í èÌÇà C ï∂éöóÒ (ÉqÉbÉg/èëófiÇÃçÄñ⁄Ç…égópÇ≥ÇÍÇÈ)*/
typedef char* FBCWordItem;
   
    /* WordItems ÇÃîzóÒ*/
typedef FBCWordItem* FBCWordList;

åüçıÉZÉbÉVÉáÉìÇÃäÑÇËìñǃÇΔèâä˙âª

OSErr FBCCreateSearchSession(
             FBCSearchSession* searchSession);
OSErr FBCDestroySearchSession(
             FBCSearchSession theSession);
OSErr FBCCloneSearchSession(
             FBCSearchSession original,
             FBCSearchSession* clone);

åüçıÉZÉbÉVÉáÉìÇÃê›íË

OSErr FBCAddAllVolumesToSession(
             FBCSearchSession theSession,
             Boolean includeRemote);	
OSErr FBCSetSessionVolumes(
             FBCSearchSession theSession,
             const SInt16 vRefNums[ ],
             UInt16 numVolumes);
OSErr FBCAddVolumeToSession(
             FBCSearchSession theSession,
             SInt16 vRefNum);
OSErr FBCRemoveVolumeFromSession(
             FBCSearchSession theSession,
             SInt16 vRefNum);
OSErr FBCGetSessionVolumeCount(
             FBCSearchSession theSession,
             UInt16* count);
OSErr FBCGetSessionVolumes(
             FBCSearchSession theSession,
             SInt16 vRefNums[ ],
             UInt16* numVolumes);

åüçıÇÃé¿çs

OSErr FBCDoQuerySearch(
             FBCSearchSession theSession,		
             char* queryText,
             const FSSpec targetDirs[ ],
             UInt32 numTargets,
             UInt32 maxHits,
             UInt32 maxHitWords);
OSErr FBCDoExampleSearch(
             FBCSearchSession theSession,	
             const UInt32* exampleHitNums,
             UInt32 numExamples,
             const FSSpec targetDirs[ ],
             UInt32 numTargets,
             UInt32 maxHits,
             UInt32 maxHitWords);
OSErr FBCBlindExampleSearch(
             FSSpec examples[ ],
             UInt32 numExamples,
             const FSSpec targetDirs[ ],
             UInt32 numTargets,
             UInt32 maxHits,
             UInt32 maxHitWords,
             Boolean allIndexes,
             Boolean includeRemote,
             FBCSearchSession* theSession);

ÉqÉbÉgÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ

OSErr FBCGetHitCount(
             FBCSearchSession theSession,
             UInt32* count);
OSErr FBCGetHitDocument(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             FSSpec* theDocument);
OSErr FBCGetHitScore(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             float* score);
OSErr FBCGetMatchedWords(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             UInt32* wordCount,
             FBCWordList* list);
OSErr FBCGetTopicWords(
             FBCSearchSession theSession,
             UInt32 hitNumber,
             UInt32* wordCount,
             FBCWordList* list);
OSErr FBCDestroyWordList(
             FBCWordList theList,
             UInt32 wordCount);
OSErr FBCReleaseSessionHits(
             FBCSearchSession theSession);

ÉeÉLÉXÉgÇÃóvñÒ

OSErr FBCSummarize(
             void* inBuf,
             UInt32 inLength,
             void* outBuf,
             UInt32* outLength,
             UInt32* numSentences);

É{ÉäÉÖÅ[ÉÄÇ…ä÷Ç∑ÇÈèÓïÒÇÃéÊìæ

Boolean FBCVolumeIsIndexed (SInt16 theVRefNum);
Boolean FBCVolumeIsRemote(SInt16 theVRefNum);
OSErr FBCVolumeIndexTimeStamp(SInt16 theVRefNum,
             UInt32* timeStamp);
OSErr FBCVolumeIndexPhysicalSize(SInt16 theVRefNum,
             UInt32* size);

ÉtÉ@ÉCÉãÅAÉtÉHÉãÉ_ÅAÇ®ÇÊÇ—É{ÉäÉÖÅ[ÉÄÇÃçıà¯çÏê¨

OSErr FBCIndexItems(
             FSSpecArrayPtr theItems,
             UInt32 itemCount);

ÉqÅ[ÉvÉXÉyÅ[ÉXÇÃó\ñÒ

void FBCSetHeapReservation(UInt32 bytes);

ÉAÉvÉäÉPÅ[ÉVÉáÉìíËã`ÇÃÉãÅ[É`Éì

typedef Boolean (*FBCCallbackProcPtr)(
             UInt16 phase,
             float percentDone,
             void *data);
void FBCSetCallback(FBCCallbackProcPtr fn, void* data);


ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ



éQçlï∂å£


ÉyÅ[ÉWÇÃêÊì™Ç…ñflÇÈ


çXêVì˙: 1999 îN 10 åé 5 ì˙